假設今天有的flask服務要附上能一起使用的DB,可以考慮使用Docker compose這個服務。
只需要一個指令docker-compose up,就可以把整套系統起起來。
可以先看一下結構及app.py:
可以發現在主程式為app.py,而在旁邊放置了docker-compose.yml、Dockerfile、requirements.txt,
而app.py的功能呢,是如果有人訪問根路由,就在DB寫入一筆hello的資料。
可以特別注意到,因為之後的docker-compose.yml會將container link在一起(container 運行在同一個Network),所以DBconnection設定為"mongodb://host.docker.internal:27017/",而不是localhost。
假設不想使用link的方法,也可以使用:
docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" <container id or name>
來查詢container與預設Network "Bridge" 所連結的IP。
而Dockerfile、requirements.txt與前面的長得差不多。
再來是docker-compose.yml:
可以發現flask的服務是現場build出image來運行成container,而mongodb是使用已經拉好的image,而且我們也將flask服務連結到與DB同一個Network。
在有docker-compose.yml的路徑上打上指令:
docker-compose up
接著可以看看運行結果。